package tracksystem;

import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import controlsystem.Course;
import controlsystem.CourseDescription;
import controlsystem.CourseManager;

import managesystem.Student;
import managesystem.StudentManager;

/**
 * Deze klasse slaat tijdelijk de starttijd, de course en de student op Wanneer
 * dit door de javascript gevraagd wordt zodat de student niet op de pagina
 * hoeft te blijven en de timer toch kan blijven lopen Deze servlet geeft de Id
 * van deze tijdelijk activity terug in een jsonobject, met als key tempId
 * 
 * @author Jannes Janssens
 */
public class StartTimerServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	/**
	 * Afhandelen van de informatie van het formulier
	 */
	public void doPost(HttpServletRequest req, HttpServletResponse resp) {
		/**
		 * Haal de course en de student op.
		 */
		System.out.println("test");
		HttpSession session = req.getSession();
		Student currStud = (Student) session.getAttribute("currStud");
		Date startDate = new Date();
		/**
		 * Maak een nieuwe activiteit, en sla hem op.
		 */
		Activity act = null;
		/**
		 * Als het een schoolactiviteit is, maak een schoolobject aan.
		 * Als er een course is meegegeven, zoek deze op.
		 */
		if (req.getParameter("tracking").equals("school")) {
			Course course = null;
			List<CourseDescription> courseObj = CourseManager.findAll();
			for (CourseDescription c : courseObj) {
				if (c.getName().equals(req.getParameter("course"))) {
					Course cobj = CourseManager.createCourseObj(c.getId());
					course = cobj;
				}
			}
			act = new SchoolActivity(startDate, course);
		} else if (req.getParameter("tracking").equals("other")) {
			/**
			 * Als het een andere activiteit is: haal deze op en sla het type erbij op.
			 */
			String type = (!req.getParameter("type").equals(null)) ? req.getParameter("type") : null;
			act = new OtherActivity(startDate, type);
		}
		/**
		 * Koppelen aan de ingelogde student
		 */
		currStud.setUnfinishedActivity(act);
		StudentManager.add(currStud);//student object updaten in de datastore
		session.setAttribute("currStud", currStud);
		/**
		 * En opslaan!
		 */
		
	}
}